LEX=lex
YACC=yacc
CFLAGS=-Wall -Wextra
CC=gcc

all:backend

backend:backend.c scanner_backend.c str_list.o declarator_list.o tab_sym.c
	$(CC) -g $(CFLAGS) -o $@ $^

backend.c:backend.y
	$(YACC) -o $@ --defines=backend.tab.h $^

str_list.o : str_list.c str_list.h
	$(CC) -g $(CFLAGS) -c str_list.c

declarator_list.o : declarator_list.c declarator_list.h
	$(CC) -g $(CFLAGS) -c declarator_list.c

tab_symb.o : tab_symb.c tab_symb.h
	$(CC) -g $(CFLAGS) -c tab_symb.c

scanner_backend.c:scanner_backend.l
	$(LEX) -o $@ $^

clean:
	rm -f backend.c scanner_backend.c backend.tab.h backend *.o
